"""
encoding = 'utf-8'
@author  : ffine
@time    : 2022-03-24 17:22
@IDEAL    : PyCharm
@goal    : 实现视频的Synthetic

python comp_video.py ~/bili/cplus
"""
import json
import os
import sys


def gci(filepath: str):
    """遍历filepath目录下所有文件，包含子目录,将所有视频音频文件读取到一个list中"""
    files = os.listdir(filepath)
    # 遍历该目录下的所有文件，包括子目录
    for fi in files:
        fi_d = os.path.join(filepath, fi)
        # print(os.getcwd())
        if os.path.isdir(fi_d):  # 若为目录
            gci(fi_d)  # 递归操作

        if fi == "audio.m4s":
            os.chdir(filepath)
            datastruct = json.load(open("../entry.json", encoding='UTF-8'))  # load保存了视频信息的json文件
            v_name = datastruct["page_data"]["download_subtitle"].split(' ')[-2] + "-" + \
                datastruct["page_data"]["download_subtitle"].split(' ')[-1]    # 取出部分信息，设为将要保存的文件名
            # print(v_name)
            try:
                global cnt
                cnt += 1
                # 使用ffmpeg将音频视频编码成mp4文件
                os.system(f"ffmpeg -y -i video.m4s -i audio.m4s -codec copy {v_name}.mp4")
            except Exception as e:
                cnt -= 1
                err.append(str(e)+fi_d)


cnt = 0  # 记录文件个数
err = []  # 记录编码失败的信息，文件
os.chdir(sys.argv[1])  # 进入目标 目录
gci(sys.argv[1])
print(cnt)
with open("~/Desktop/python_learn/stddemo/comp_video.log", "a") as f:
    for e in err:
        f.write(e)
